package com.leo.util.language.hash;

/**
 *
 * @author hexiufeng
 * @date 2017/6/8
 */
public interface Hashable {
  /**
   * hash32
   * @param raw
   * @return
   */
  int hash32(String raw);

  /**
   * hash64
   * @param raw
   * @return
   */
  long hash64(String raw);

  /**
   * hash64WithSeeds
   * @param raw
   * @param seed0
   * @param seed1
   * @return
   */
  long hash64WithSeeds(String raw, long seed0, long seed1);

  /**
   * hash64WithSeed
   * @param raw
   * @param seed
   * @return
   */
  long hash64WithSeed(String raw, long seed);

  /**
   * hash128
   * @param raw
   * @return
   */
  Number128 hash128(String raw);

  /**
   * hash128WithSeed
   * @param raw
   * @param seed
   * @return
   */
  Number128 hash128WithSeed(String raw, final Number128 seed);

}
